/* @flow */

import {
  isPreTag,
  mustUseProp,
  isReservedTag,
  getTagNamespace
} from '../util/index'

import modules from './modules/index'
import directives from './directives/index'
import { genStaticKeys } from 'shared/util'
import { isUnaryTag, canBeLeftOpenTag } from './util'

export const baseOptions: CompilerOptions = {
  expectHTML: true, //值为true
  modules, //值为[ klass: { staticKeys: ['staticClass'], transformNode, genData }, style:{staticKeys: ['staticStyle'], transformNode, genData }, model: preTransformNode ]
  directives, //值为{ model: function(el, _dir, warn), text:function(el, _dir, warn), html:function(el, _dir, warn) }
  isPreTag, //值为匿名函数isPreTag(tag) 判断传入的tag是否是pre标签
  isUnaryTag,//值为匿名函数isUnaryTag(str) 判断传入的str是否是Unary标签，Unary标签在./util里面
  mustUseProp, //值为匿名函数mustUseProp(tag, type, attr) 就是判断某类内置html标签是否有某个属性，如option是否有selected属性
  canBeLeftOpenTag,//值为匿名函数canBeLeftOpenTag(str) 判断传入的str标签是否是一些表格类型标签
  isReservedTag, //值为匿名函数isReservedTag(tag)，判断传入的tag标签是否是html内置标签或者是svg,区别自定义组件和内置标签
  getTagNamespace, //值为匿名函数getTagNamespace(tag) 如果tag = svg 就返回svg 如果tag = math就返回math
  staticKeys: genStaticKeys(modules) //值为 staticClass,staticStyle
}
 